7.04. Справочник по Mimir
Справочник по Mimir
Grafana Mimir — это масштабируемая, отказоустойчивая, мультитенантная система долгосрочного хранения метрик, совместимая с Prometheus. Она предназначена для приема, хранения и выполнения запросов к большим объемам временных рядов с высокой доступностью и эффективным использованием ресурсов. Mimir является частью экосистемы Grafana Labs и служит основой для метрической подсистемы в стеке наблюдаемости LGTM (Loki, Grafana, Tempo, Mimir).
Архитектура
Микросервисная архитектура
Grafana Mimir использует микросервисную архитектуру. Все компоненты реализованы в одном исполняемом файле, но могут запускаться как отдельные процессы или вместе в так называемом «монолитном» режиме. Выбор активных компонентов определяется параметром -target.
Начиная с версии 3.0 поддерживаются два типа архитектур:
- Ingest storage (предпочтительная) — использует Kafka как центральный конвейер для разделения операций записи и чтения.
- Classic — использует stateful ingesters с локальными журналами предзаписи (WAL) для одновременного приема новых данных и обслуживания недавних запросов.
Mimir принимает данные через API удаленной записи Prometheus. Каждый HTTP-запрос должен содержать заголовок X-Scope-OrgId, указывающий идентификатор клиента (тенанта). Аутентификация и авторизация обрабатываются внешним обратным прокси.
Хранение данных основано на формате TSDB из Prometheus. Данные каждого тенанта сохраняются в собственном TSDB, который записывает временные ряды в блоки на диске. Каждый блок по умолчанию охватывает двухчасовой интервал времени и содержит индексный файл, метаданные и чанки временных рядов.
Для долгосрочного хранения Mimir требует объектное хранилище одного из следующих типов:
- Amazon S3
- Google Cloud Storage
- Microsoft Azure Storage
- OpenStack Swift
- Локальная файловая система (только для одиночного узла)
Основные компоненты
- Distributor — получает входящие метрики от Prometheus через Remote Write API, проверяет корректность данных и распределяет их между ingesters.
- Ingester — принимает метрики от distributor’а, сохраняет их в памяти и периодически сбрасывает на диск в виде блоков TSDB.
- Querier — обрабатывает PromQL-запросы, собирая данные как из ingesters (для свежих данных), так и из долгосрочного хранилища (для исторических).
- Query-frontend — принимает запросы от пользователей, разбивает их на более мелкие подзапросы, кэширует результаты и управляет очередями.
- Compactor — выполняет горизонтальное и вертикальное сжатие блоков TSDB, а также управляет индексами для глобального поиска.
- Ruler — выполняет правила записи и алертинга на основе PromQL.
- Alertmanager — управляет уведомлениями об алертах, группирует и отправляет их по заданным маршрутам.
- Overrides-exporter — предоставляет информацию о лимитах и настройках тенантов через метрики Prometheus.
- Store-gateway — загружает блоки TSDB из объектного хранилища в память и предоставляет их querier’у для выполнения запросов.
- Index-gateway — обслуживает глобальные индексы меток и имен метрик для ускорения поиска.
Конфигурация
Конфигурация Mimir осуществляется через YAML-файл или флаги командной строки. При совместном использовании флаги имеют приоритет над значениями в файле. Текущую конфигурацию любого компонента можно просмотреть по HTTP-эндпоинту /config (пароли скрыты).
Все параметры делятся на три категории:
- Basic — базовые параметры, которые большинство пользователей меняют (например, учетные данные хранилища).
- Advanced — продвинутые параметры, изменяемые редко, но имеющие важные сценарии использования.
- Experimental — экспериментальные параметры для новых функций.
Ниже приведены ключевые блоки конфигурации с описанием параметров, типов значений и возможных настроек.
Общие параметры
# Список компонентов, запускаемых в процессе. Значение 'all' включает все компоненты,
# необходимые для полноценной работы Mimir в single-binary режиме.
# CLI flag: -target
[target: <string> | default = "all"]
# Включает обязательное указание tenant ID в заголовке X-Scope-OrgId.
# Если false, используется tenant ID из auth.no-auth-tenant.
# CLI flag: -auth.multitenancy-enabled
[multitenancy_enabled: <boolean> | default = true]
server
Блок server настраивает HTTP- и gRPC-серверы компонентов.
# Сетевой протокол для HTTP-сервера.
# CLI flag: -server.http-listen-network
[http_listen_network: <string> | default = "tcp"]
# Адрес, на котором слушает HTTP-сервер.
# CLI flag: -server.http-listen-address
[http_listen_address: <string> | default = ""]
# Порт HTTP-сервера.
# CLI flag: -server.http-listen-port
[http_listen_port: <int> | default = 8080]
# Адрес gRPC-сервера.
# CLI flag: -server.grpc-listen-address
[grpc_listen_address: <string> | default = ""]
# Порт gRPC-сервера.
# CLI flag: -server.grpc-listen-port
[grpc_listen_port: <int> | default = 9095]
# Максимальный размер сообщения gRPC (в байтах).
# CLI flag: -server.grpc-max-recv-msg-size-bytes
[grpc_server_max_recv_msg_size: <int> | default = 104857600] # 100 MiB
# Таймаут простоя соединения gRPC.
# CLI flag: -server.grpc.keepalive.min-time-between-pings
[grpc_server_keepalive_min_time_between_pings: <duration> | default = 10s]
auth
Блок auth управляет аутентификацией и авторизацией запросов. Mimir не включает встроенный механизм аутентификации — он ожидает, что заголовок X-Scope-OrgId будет добавлен внешним прокси.
# Идентификатор клиента, используемый, если multitenancy_enabled = false.
# CLI flag: -auth.no-auth-tenant
[no_auth_tenant: <string> | default = "fake"]
# Список доверенных клиентов (тенантов), которые могут отправлять данные.
# Если пустой — разрешены все.
# CLI flag: -auth.trusted-tenants
[trusted_tenants: <string> | default = ""]
distributor
Компонент distributor отвечает за прием метрик через Remote Write API и их распределение по ingesters.
# Максимальное количество временных рядов на одного клиента (по умолчанию 0 — без ограничений).
# CLI flag: -distributor.max-series-per-metric
[max_series_per_metric: <int> | default = 0]
# Максимальное общее количество временных рядов на клиента.
# CLI flag: -distributor.max-series-per-user
[max_series_per_user: <int> | default = 0]
# Максимальный размер одного запроса Remote Write (в байтах).
# CLI flag: -distributor.max-recv-msg-size
[max_recv_msg_size: <int> | default = 104857600] # 100 MiB
# Максимальное количество меток в одном сэмпле.
# CLI flag: -distributor.max-label-names-per-series
[max_label_names_per_series: <int> | default = 30]
# Максимальная длина имени метки или значения (в символах).
# CLI flag: -distributor.max-label-value-length
[max_label_value_length: <int> | default = 2048]
# Интервал между повторными попытками отправки данных в ingester при ошибке.
# CLI flag: -distributor.retry-period
[retry_period: <duration> | default = 100ms]
# Максимальное количество попыток отправки.
# CLI flag: -distributor.max-retries
[max_retries: <int> | default = 3]
ingester
Ingester хранит недавние данные в памяти и периодически сохраняет их на диск в виде блоков TSDB.
# Путь к каталогу WAL (Write-Ahead Log).
# CLI flag: -ingester.wal-dir
[wal_dir: <string> | default = "./wal"]
# Интервал между сбросами данных из памяти на диск (в виде блоков TSDB).
# CLI flag: -ingester.flush-period
[flush_period: <duration> | default = 1h]
# Максимальное время жизни временного ряда в памяти без обновления.
# CLI flag: -ingester.max-tolerated-jitter
[max_tolerated_jitter: <duration> | default = 5m]
# Минимальная продолжительность блока TSDB (обычно 2h).
# CLI flag: -ingester.min-block-duration
[min_block_duration: <duration> | default = 2h]
# Максимальная продолжительность блока TSDB (обычно 12h или 24h).
# CLI flag: -ingester.max-block-duration
[max_block_duration: <duration> | default = 12h]
# Включает сжатие WAL.
# CLI flag: -ingester.wal-compression-enabled
[wal_compression_enabled: <boolean> | default = true]
# Максимальный объем памяти, выделяемый под временные ряды (в байтах).
# CLI flag: -ingester.max-chunk-idle-time
[max_chunk_idle_time: <duration> | default = 1h]
querier
Querier отвечает за выполнение PromQL-запросов, объединяя данные из ingesters (для свежих данных) и store-gateway или долгосрочного хранилища (для исторических).
# Максимальное количество одновременно обрабатываемых запросов.
# CLI flag: -querier.max-concurrent
[max_concurrent: <int> | default = 20]
# Максимальное время выполнения одного запроса.
# CLI flag: -querier.timeout
[timeout: <duration> | default = 2m]
# Интервал между повторными попытками при ошибке запроса к ingester’у.
# CLI flag: -querier.retry-period
[retry_period: <duration> | default = 100ms]
# Максимальное количество попыток повтора.
# CLI flag: -querier.max-retries
[max_retries: <int> | default = 3]
# Включает кэширование результатов запросов в памяти.
# CLI flag: -querier.cache-results
[cache_results: <boolean> | default = false]
# Размер кэша результатов (в байтах).
# CLI flag: -querier.results-cache-max-freshness
[results_cache_max_freshness: <duration> | default = 1m]
query_frontend
Query-frontend принимает запросы от пользователей, разбивает их на подзапросы по времени, кэширует результаты и управляет очередями.
# Максимальная продолжительность одного подзапроса (по умолчанию 24h).
# CLI flag: -query-frontend.split-interval
[split_interval: <duration> | default = 24h]
# Максимальное количество одновременных запросов на одного клиента.
# CLI flag: -query-frontend.max-outstanding-requests-per-tenant
[max_outstanding_requests_per_tenant: <int> | default = 100]
# Включает кэширование результатов в Memcached или Redis.
# CLI flag: -query-frontend.cache-compression-enabled
[cache_compression_enabled: <boolean> | default = true]
# Тип кэша: inmemory, memcached, redis.
# CLI flag: -query-frontend.cache.type
[cache_type: <string> | default = "inmemory"]
# Адреса Memcached-серверов (если используется).
# CLI flag: -memcached.addresses
[memcached_addresses: <string> | default = ""]
# Префикс ключей кэша.
# CLI flag: -query-frontend.cache.prefix
[cache_prefix: <string> | default = "mimir_query_"]
compactor
Compactor выполняет сжатие блоков TSDB и управляет глобальными индексами.
# Интервал между запусками компактизации.
# CLI flag: -compactor.compaction-interval
[compaction_interval: <duration> | default = 1h]
# Минимальный возраст блока для участия в горизонтальной компактизации.
# CLI flag: -compactor.block-ranges
[block_ranges: <list of durations> | default = ["2h", "12h", "24h"]]
# Включает вертикальную компактизацию (объединение перекрывающихся блоков).
# CLI flag: -compactor.vertical-compaction-enabled
[vertical_compaction_enabled: <boolean> | default = true]
# Путь к каталогу метаданных компактора.
# CLI flag: -compactor.data-dir
[data_dir: <string> | default = "./compactor"]
# Включает создание глобальных индексов меток.
# CLI flag: -compactor.sharding-enabled
[sharding_enabled: <boolean> | default = true]
ruler
Ruler выполняет правила записи (recording rules) и алертинга (alerting rules) на основе PromQL для каждого тенанта.
# Интервал между выполнениями правил (по умолчанию 15s).
# CLI flag: -ruler.evaluation-interval
[evaluation_interval: <duration> | default = 15s]
# Каталог, где хранятся файлы правил для каждого тенанта.
# CLI flag: -ruler.rule-path
[rule_path: <string> | default = "./rules"]
# Максимальное количество одновременно выполняемых правил.
# CLI flag: -ruler.max-rules-per-tenant
[max_rules_per_tenant: <int> | default = 0] # 0 — без ограничений
# Включает поддержку алертинга через Alertmanager.
# CLI flag: -ruler.alertmanager-url
[alertmanager_url: <string> | default = ""]
# Таймаут запроса к Alertmanager.
# CLI flag: -ruler.alertmanager-timeout
[alertmanager_timeout: <duration> | default = 10s]
# Интервал между повторными попытками отправки алертов.
# CLI flag: -ruler.alertmanager-retry-period
[alertmanager_retry_period: <duration> | default = 100ms]
# Максимальное количество попыток отправки.
# CLI flag: -ruler.alertmanager-max-retries
[alertmanager_max_retries: <int> | default = 3]
alertmanager
Alertmanager управляет уведомлениями об алертах: группирует их, подавляет дубликаты и отправляет по заданным маршрутам.
# Каталог конфигураций Alertmanager для каждого тенанта.
# CLI flag: -alertmanager.configs.url
[configs_url: <string> | default = ""]
# Интервал между синхронизациями конфигурации.
# CLI flag: -alertmanager.configs.poll-interval
[configs_poll_interval: <duration> | default = 15s]
# Путь к локальному каталогу с конфигурациями.
# CLI flag: -alertmanager.storage.path
[storage_path: <string> | default = "./alertmanager"]
# Включает поддержку внешних шаблонов уведомлений.
# CLI flag: -alertmanager.external-url
[external_url: <string> | default = ""]
# Максимальный размер очереди уведомлений.
# CLI flag: -alertmanager.max-queue-size
[max_queue_size: <int> | default = 10000]
storage
Блок storage определяет параметры взаимодействия с объектным хранилищем и локальной файловой системой.
# Тип объектного хранилища: s3, gcs, azure, swift, filesystem.
# CLI flag: -storage.backend
[backend: <string> | default = "s3"]
# Путь к каталогу блоков TSDB (для backend=filesystem).
# CLI flag: -storage.filesystem.dir
[filesystem_dir: <string> | default = "./data"]
# Адрес бакета S3.
# CLI flag: -storage.s3.bucket-name
[s3_bucket_name: <string> | default = ""]
# Регион AWS.
# CLI flag: -storage.s3.region
[s3_region: <string> | default = "us-east-1"]
# Ключ доступа AWS.
# CLI flag: -storage.s3.access-key-id
[s3_access_key_id: <string> | default = ""]
# Секретный ключ AWS.
# CLI flag: -storage.s3.secret-access-key
[s3_secret_access_key: <string> | default = ""]
# Конечная точка S3 (для совместимых реализаций, например MinIO).
# CLI flag: -storage.s3.endpoint
[s3_endpoint: <string> | default = ""]
# Включает использование HTTPS для S3.
# CLI flag: -storage.s3.insecure
[s3_insecure: <boolean> | default = false]
# Префикс пути в бакете (например, mimir/tenant1).
# CLI flag: -storage.prefix
[prefix: <string> | default = ""]
limits
Блок limits задает ограничения на ресурсы и поведение клиентов (тенантов).
# Максимальное количество активных серий на тенанта.
# CLI flag: -distributor.max-series-per-user
[max_series_per_user: <int> | default = 0]
# Максимальное количество запросов в секунду на тенанта.
# CLI flag: -querier.max-query-parallelism
[max_query_parallelism: <int> | default = 14]
# Максимальная продолжительность запроса (в секундах).
# CLI flag: -querier.max-query-length
[max_query_length: <duration> | default = 0] # 0 — без ограничений
# Максимальное количество выборок в одном запросе.
# CLI flag: -querier.max-samples-per-query
[max_samples_per_query: <int> | default = 50000000]
# Максимальное количество одновременных правил на тенанта.
# CLI flag: -ruler.max-rules-per-tenant
[max_rules_per_tenant: <int> | default = 0]
# Максимальный размер конфигурации Alertmanager (в байтах).
# CLI flag: -alertmanager.max-config-size-bytes
[alertmanager_max_config_size_bytes: <int> | default = 524288] # 512 KiB
overrides
Блок overrides позволяет задавать персонализированные лимиты и настройки для отдельных тенантов. Эти параметры переопределяют глобальные значения из блока limits.
# Список переопределений по тенантам.
# Каждый элемент — это map с tenant ID в качестве ключа.
overrides:
<tenant_id>:
# Максимальное количество активных серий.
max_series_per_user: <int>
# Максимальная продолжительность запроса.
max_query_length: <duration>
# Максимальное количество выборок в одном запросе.
max_samples_per_query: <int>
# Интервал выполнения правил ruler’а.
evaluation_interval: <duration>
# Максимальный размер конфигурации Alertmanager.
alertmanager_max_config_size_bytes: <int>
Переопределения могут загружаться из файла, HTTP-эндпоинта или Kubernetes ConfigMap. Поддерживается горячая перезагрузка без перезапуска компонентов.
runtime_config
Позволяет обновлять конфигурацию во время выполнения через HTTP-эндпоинт или файл.
# Путь к файлу с динамической конфигурацией.
# CLI flag: -runtime-config.file
[runtime_config_file: <string> | default = ""]
# Интервал проверки изменений файла.
# CLI flag: -runtime-config.reload-period
[runtime_config_reload_period: <duration> | default = 10s]
memberlist
Используется для обнаружения узлов в режиме gossip (например, для распределения ingesters).
# Имя кластера memberlist.
# CLI flag: -memberlist.cluster-label
[cluster_label: <string> | default = "mimir"]
# Порт для gossip-трафика.
# CLI flag: -memberlist.bind-port
[bind_port: <int> | default = 7946]
# Адрес для привязки.
# CLI flag: -memberlist.bind-addr
[bind_addr: <string> | default = "0.0.0.0"]
# Список известных узлов для начального подключения.
# CLI flag: -memberlist.join
[join_members: <list of strings> | default = []]
store_gateway
Store-gateway загружает блоки TSDB из объектного хранилища в локальный кэш и предоставляет их querier’у для выполнения запросов к историческим данным.
# Интервал между синхронизациями метаданных блоков из хранилища.
# CLI flag: -store-gateway.sync-interval
[sync_interval: <duration> | default = 15m]
# Максимальное количество блоков, загружаемых одновременно.
# CLI flag: -store-gateway.max-concurrent
[max_concurrent: <int> | default = 20]
# Путь к каталогу кэша блоков.
# CLI flag: -store-gateway.cache-dir
[cache_dir: <string> | default = "./store-cache"]
# Максимальный объем кэша (в байтах).
# CLI flag: -store-gateway.cache-size-bytes
[cache_size_bytes: <int> | default = 0] # 0 — без ограничений
# Включает предварительную загрузку блоков при старте.
# CLI flag: -store-gateway.prefetch-blocks
[prefetch_blocks: <boolean> | default = false]
index_gateway
Index-gateway обслуживает глобальные индексы меток и имен метрик, созданные компактором, для ускорения поиска временных рядов.
# Интервал между синхронизациями индексов из хранилища.
# CLI flag: -index-gateway.sync-interval
[sync_interval: <duration> | default = 15m]
# Путь к каталогу кэша индексов.
# CLI flag: -index-gateway.cache-dir
[cache_dir: <string> | default = "./index-cache"]
# Максимальный объем кэша индексов (в байтах).
# CLI flag: -index-gateway.cache-size-bytes
[cache_size_bytes: <int> | default = 0]
# Включает использование шардирования для распределения индексов.
# CLI flag: -index-gateway.sharding-enabled
[sharding_enabled: <boolean> | default = true]
tracing
Mimir поддерживает распределенную трассировку через OpenTelemetry или Jaeger.
# Включает экспорт трассировок.
# CLI flag: -tracing.enabled
[enabled: <boolean> | default = false]
# Тип экспортера: otlp, jaeger.
# CLI flag: -tracing.otlp.endpoint
[otlp_endpoint: <string> | default = ""]
# Интервал между отправками пакетов трассировок.
# CLI flag: -tracing.batch-flush-timeout
[batch_flush_timeout: <duration> | default = 5s]
# Максимальное количество спанов в одном пакете.
# CLI flag: -tracing.batch-size-bytes
[batch_size_bytes: <int> | default = 5000]
logging
Настройка журналирования.
# Уровень логирования: debug, info, warn, error.
# CLI flag: -log.level
[log_level: <string> | default = "info"]
# Формат логов: logfmt, json.
# CLI flag: -log.format
[log_format: <string> | default = "logfmt"]
analytics
Анонимная телеметрия для сбора статистики использования.
# Включает отправку анонимных данных об использовании.
# CLI flag: -analytics.reporting-enabled
[reporting_enabled: <boolean> | default = true]
# Идентификатор установки (генерируется автоматически).
# CLI flag: -analytics.instance-id
[instance_id: <string> | default = ""]
frontend
Настройки веб-интерфейса (если используется встроенный UI).
# Адрес, на котором слушает веб-сервер интерфейса.
# CLI flag: -frontend.http-listen-address
[http_listen_address: <string> | default = ""]
# Порт веб-интерфейса.
# CLI flag: -frontend.http-listen-port
[http_listen_port: <int> | default = 3000]
# Включает CORS для API.
# CLI flag: -frontend.cors-enabled
[cors_enabled: <boolean> | default = false]
blocks_storage
Блок blocks_storage управляет хранением и загрузкой блоков TSDB.
# Интервал между синхронизациями метаданных блоков из хранилища.
# CLI flag: -blocks-storage.sync-interval
[sync_interval: <duration> | default = 15m]
# Максимальное количество одновременно загружаемых блоков.
# CLI flag: -blocks-storage.max-concurrent-downloads
[max_concurrent_downloads: <int> | default = 20]
# Каталог локального кэша блоков.
# CLI flag: -blocks-storage.bucket-store.sync-dir
[bucket_store_sync_dir: <string> | default = "./tsdb-sync"]
# Максимальный объем кэша блоков (в байтах).
# CLI flag: -blocks-storage.bucket-store.max-size-bytes
[bucket_store_max_size_bytes: <int> | default = 0]
auth
Блок auth управляет аутентификацией и мультиарендностью.
# Включает обязательную проверку заголовка X-Scope-OrgId.
# CLI flag: -auth.multitenancy-enabled
[multitenancy_enabled: <boolean> | default = true]
# Tenant ID, используемый, если multitenancy_enabled = false.
# CLI flag: -auth.no-auth-tenant
[no_auth_tenant: <string> | default = "fake"]
# Путь к файлу с маппингом токенов в tenant ID (для dev-режима).
# CLI flag: -auth.tenant-token-file
[tenant_token_file: <string> | default = ""]
distributor
Компонент, принимающий данные от клиентов.
# Максимальное количество временных рядов в одном запросе.
# CLI flag: -distributor.max-series-per-metric
[max_series_per_metric: <int> | default = 10000]
# Максимальный размер одного запроса (в байтах).
# CLI flag: -distributor.max-recv-msg-size-bytes
[max_recv_msg_size: <int> | default = 104857600] # 100 MiB
# Интервал между отправкой метрик о состоянии ingesters.
# CLI flag: -distributor.ingestion-tenant-shard-size
[ingestion_tenant_shard_size: <int> | default = 32]
# Включает поддержку exemplars (примеров трассировки).
# CLI flag: -distributor.enable-exemplar-storage
[enable_exemplar_storage: <boolean> | default = false]
ingester
Отвечает за прием и временное хранение данных.
# Директория для WAL (Write-Ahead Log).
# CLI flag: -ingester.wal-dir
[wal_dir: <string> | default = "wal"]
# Интервал между сбросами данных на диск (блоки TSDB).
# CLI flag: -ingester.flush-period
[flush_period: <duration> | default = "1h"]
# Максимальная продолжительность блока TSDB.
# CLI flag: -ingester.max-block-duration
[max_block_duration: <duration> | default = "2h"]
# Включает сжатие WAL.
# CLI flag: -ingester.wal-compression-enabled
[wal_compression_enabled: <boolean> | default = true]
# Максимальное количество активных временных рядов на один tenant.
# CLI flag: -ingester.max-series-per-user
[max_series_per_user: <int> | default = 10000000]
# Максимальное количество активных временных рядов на одну метрику.
# CLI flag: -ingester.max-series-per-metric
[max_series_per_metric: <int> | default = 100000]
querier
Выполняет PromQL-запросы.
# Максимальное количество одновременных запросов к одному ingester’у.
# CLI flag: -querier.max-concurrent
[max_concurrent: <int> | default = 20]
# Таймаут запроса к ingester’у.
# CLI flag: -querier.query-ingesters-within
[query_ingesters_within: <duration> | default = "15m"]
# Включает кэширование результатов запросов.
# CLI flag: -querier.cache-results
[cache_results: <boolean> | default = false]
# TTL кэша результатов запросов.
# CLI flag: -querier.results-cache-ttl
[results_cache_ttl: <duration> | default = "5m"]
query_frontend
Принимает пользовательские запросы и управляет их выполнением.
# Максимальное количество одновременных запросов от одного tenant’а.
# CLI flag: -frontend.max-outstanding-requests-per-tenant
[max_outstanding_requests_per_tenant: <int> | default = 100]
# Включает разбиение запросов по времени.
# CLI flag: -frontend.split-queries-by-interval
[split_queries_by_interval: <duration> | default = "15m"]
# Включает кэширование запросов.
# CLI flag: -frontend.cache-split-queries
[cache_split_queries: <boolean> | default = false]
# TTL кэша запросов.
# CLI flag: -frontend.results-cache-ttl
[results_cache_ttl: <duration> | default = "5m"]
compactor
Управляет сжатием и индексацией блоков.
# Интервал между запусками компактизации.
# CLI flag: -compactor.compaction-interval
[compaction_interval: <duration> | default = "10m"]
# Минимальный возраст блока для участия в вертикальной компактизации.
# CLI flag: -compactor.block-deletion-delay
[block_deletion_delay: <duration> | default = "1h"]
# Включает горизонтальную компактизацию.
# CLI flag: -compactor.sharding-enabled
[sharding_enabled: <boolean> | default = true]
# Количество шардов компактора.
# CLI flag: -compactor.shard-size
[shard_size: <int> | default = 1]
ruler
Выполняет правила записи и алертинга.
# Интервал оценки правил.
# CLI flag: -ruler.evaluation-interval
[evaluation_interval: <duration> | default = "1m"]
# Директория для хранения правил.
# CLI flag: -ruler.rule-path
[rule_path: <string> | default = "rules"]
# Использовать объектное хранилище для хранения правил.
# CLI flag: -ruler.storage.type
[storage_type: <string> | default = "local"]
# Префикс пути к правилам в объектном хранилище.
# CLI flag: -ruler.storage.prefix
[storage_prefix: <string> | default = "rules/"]
alertmanager
Управляет уведомлениями об алертах.
# Директория конфигурации Alertmanager’а.
# CLI flag: -alertmanager.configs.url
[configs_url: <string> | default = ""]
# Интервал перезагрузки конфигурации.
# CLI flag: -alertmanager.configs.poll-interval
[configs_poll_interval: <duration> | default = "1m"]
# Включает хранение состояния в объектном хранилище.
# CLI flag: -alertmanager.persistence.enabled
[persistence_enabled: <boolean> | default = false]
store_gateway
Загружает блоки из объектного хранилища.
# Максимальное количество блоков в памяти.
# CLI flag: -store-gateway.sharding-enabled
[sharding_enabled: <boolean> | default = true]
# Размер пула блоков.
# CLI flag: -store-gateway.block-pool-size-bytes
[block_pool_size: <int> | default = 2147483648] # 2 GiB
# Интервал между синхронизациями метаданных блоков.
# CLI flag: -store-gateway.sync-interval
[sync_interval: <duration> | default = "5m"]
index_gateway
Служит для глобального поиска меток и имен метрик.
# Включает использование index gateway.
# CLI flag: -index-gateway.use-index-gateway
[use_index_gateway: <boolean> | default = false]
# Интервал между синхронизациями индексов.
# CLI flag: -index-gateway.sync-interval
[sync_interval: <duration> | default = "5m"]
limits
Блок limits определяет глобальные и пер-тенантные ограничения на использование ресурсов.
# Максимальное количество активных временных рядов на tenant.
# CLI flag: -distributor.max-series-per-user
[max_series_per_user: <int> | default = 10000000]
# Максимальное количество меток на один временной ряд.
# CLI flag: -distributor.max-label-names-per-series
[max_label_names_per_series: <int> | default = 30]
# Максимальная длина имени метки или её значения (в байтах).
# CLI flag: -distributor.max-label-value-length
[max_label_value_length: <int> | default = 2048]
# Максимальный размер одного запроса (в байтах).
# CLI flag: -distributor.max-recv-msg-size-bytes
[max_recv_msg_size: <int> | default = 104857600] # 100 MiB
# Максимальное количество выборок в одном запросе.
# CLI flag: -querier.max-samples
[max_samples: <int> | default = 50000000]
# Максимальная продолжительность запроса.
# CLI flag: -querier.max-query-length
[max_query_length: <duration> | default = "0s"] # 0 — без ограничения
# Максимальное количество одновременных запросов от одного tenant’а.
# CLI flag: -frontend.max-outstanding-requests-per-tenant
[max_outstanding_requests_per_tenant: <int> | default = 100]
storage
Конфигурация хранилища данных.
# Тип объектного хранилища: s3, gcs, azure, swift, filesystem.
# CLI flag: -storage.backend
[backend: <string> | default = "s3"]
# Префикс пути к данным в хранилище.
# CLI flag: -storage.bucket-name
[bucket_name: <string> | default = "mimir"]
# Включает сжатие блоков при загрузке в хранилище.
# CLI flag: -storage.tsdb.block-compression-enabled
[block_compression_enabled: <boolean> | default = true]
# Интервал между синхронизациями метаданных блоков.
# CLI flag: -store-gateway.sync-interval
[sync_interval: <duration> | default = "5m"]
storage.s3
Настройки для Amazon S3 и совместимых хранилищ.
# URL конечной точки S3.
# CLI flag: -s3.endpoint
[endpoint: <string> | default = ""]
# Регион AWS.
# CLI flag: -s3.region
[region: <string> | default = "us-east-1"]
# Ключ доступа AWS.
# CLI flag: -s3.access-key-id
[access_key_id: <string> | default = ""]
# Секретный ключ AWS.
# CLI flag: -s3.secret-access-key
[secret_access_key: <string> | default = ""]
# Имя профиля AWS.
# CLI flag: -s3.profile
[profile: <string> | default = ""]
# Включает использование IAM-ролей.
# CLI flag: -s3.use-iam-role
[use_iam_role: <boolean> | default = false]
# Включает шифрование SSE-S3.
# CLI flag: -s3.sse-encryption
[sse_encryption: <boolean> | default = false]
storage.gcs
Настройки для Google Cloud Storage.
# Идентификатор проекта GCP.
# CLI flag: -gcs.project-id
[project_id: <string> | default = ""]
# Путь к файлу учетных данных сервисного аккаунта.
# CLI flag: -gcs.service-account-key-file
[service_account_key_file: <string> | default = ""]
storage.azure
Настройки для Azure Blob Storage.
# Имя учетной записи хранения.
# CLI flag: -azure.account-name
[account_name: <string> | default = ""]
# Ключ доступа к учетной записи.
# CLI flag: -azure.account-key
[account_key: <string> | default = ""]
# Имя контейнера.
# CLI flag: -azure.container-name
[container_name: <string> | default = ""]
cache
Настройки кэширования запросов и метаданных.
# Тип кэша: memcached, redis, inmemory.
# CLI flag: -cache.backend
[backend: <string> | default = "inmemory"]
# TTL записей в кэше.
# CLI flag: -cache.default-ttl
[default_ttl: <duration> | default = "5m"]
# Размер кэша в памяти (в байтах).
# CLI flag: -cache.inmemory.size-bytes
[inmemory_size: <int> | default = 268435456] # 256 MiB
cache.memcached
# Адреса Memcached-серверов.
# CLI flag: -memcached.addresses
[addresses: <[]string> | default = []]
# Таймаут соединения.
# CLI flag: -memcached.timeout
[timeout: <duration> | default = "100ms"]
cache.redis
# Адрес Redis-сервера.
# CLI flag: -redis.address
[address: <string> | default = "localhost:6379"]
# Пароль Redis.
# CLI flag: -redis.password
[password: <string> | default = ""]
# База данных Redis.
# CLI flag: -redis.db
[db: <int> | default = 0]
overrides
Блок overrides позволяет задавать пер-тенантные ограничения и настройки, переопределяющие глобальные значения из limits.
# Используется для загрузки конфигурации лимитов из внешнего источника.
# CLI flag: -runtime-config.file
[runtime_config_file: <string> | default = ""]
# Интервал обновления конфигурации.
# CLI flag: -runtime-config.reload-period
[runtime_reload_period: <duration> | default = "10s"]
# Пример структуры per-tenant overrides:
# overrides:
# 'tenant-a':
# ingestion_rate: 50000
# max_series_per_user: 5000000
# 'tenant-b':
# ingestion_rate: 100000
# max_series_per_user: 10000000
analytics
Включает анонимную телеметрию использования.
# Отправка анонимных метрик Grafana Labs.
# CLI flag: -analytics.reporting-enabled
[reporting_enabled: <boolean> | default = true]
http_client
Настройки HTTP-клиента для внутренних вызовов между компонентами.
# Таймаут соединения.
# CLI flag: -http-client.idle-conn-timeout
[idle_conn_timeout: <duration> | default = "90s"]
# Максимальное количество соединений на хост.
# CLI flag: -http-client.max-idle-conns-per-host
[max_idle_conns_per_host: <int> | default = 100]
# Общее максимальное количество простаивающих соединений.
# CLI flag: -http-client.max-idle-conns
[max_idle_conns: <int> | default = 100]
memberlist
Конфигурация gossip-протокола для обнаружения узлов в кластере (актуально при использовании in-memory ring).
# Адрес привязки для gossip-трафика.
# CLI flag: -memberlist.bind-addr
[bind_addr: <string> | default = "0.0.0.0"]
# Порт gossip-трафика.
# CLI flag: -memberlist.bind-port
[bind_port: <int> | default = 7946]
# Список известных узлов для начального джойна.
# CLI flag: -memberlist.join
[join_members: <[]string> | default = []]
blocks_storage
Устаревший блок, заменённый на storage. Сохранён для обратной совместимости.
tsdb
Параметры TSDB, влияющие на поведение локальных блоков.
# Максимальное количество открытых блоков в памяти.
# CLI flag: -tsdb.max-blocks-to-load
[max_blocks_to_load: <int> | default = 0] # 0 — без ограничения
# Включает сжатие чанков временных рядов.
# CLI flag: -tsdb.chunk-compression
[chunk_compression: <string> | default = "snappy"]
experimental
Экспериментальные функции, не рекомендованные для продакшена.
# Включает поддержку exemplars.
# CLI flag: -experimental.exemplar-storage-enabled
[exemplar_storage_enabled: <boolean> | default = false]
# Включает поддержку native histograms.
# CLI flag: -experimental.native-histograms-enabled
[native_histograms_enabled: <boolean> | default = false]
tracing
Настройки распределённой трассировки запросов через OpenTelemetry.
# Включает экспорт трассировок.
# CLI flag: -tracing.enabled
[enabled: <boolean> | default = false]
# Тип экспортера: jaeger, otlp.
# CLI flag: -tracing.driver
[driver: <string> | default = "jaeger"]
# Адрес Jaeger-агента (для UDP).
# CLI flag: -tracing.jaeger-agent-host
[jaeger_agent_host: <string> | default = "localhost"]
# Порт Jaeger-агента.
# CLI flag: -tracing.jaeger-agent-port
[jaeger_agent_port: <int> | default = 6831]
# Адрес OTLP-эндпоинта.
# CLI flag: -tracing.otlp.endpoint
[otlp_endpoint: <string> | default = "localhost:4317"]
logging
Конфигурация логирования.
# Уровень логирования: debug, info, warn, error.
# CLI flag: -log.level
[level: <string> | default = "info"]
# Формат логов: logfmt, json.
# CLI flag: -log.format
[format: <string> | default = "logfmt"]
metrics
Настройки внутренних метрик Mimir.
# Адрес для экспорта Prometheus-метрик.
# CLI flag: -metrics.address
[address: <string> | default = ":8081"]
# Путь к эндпоинту метрик.
# CLI flag: -metrics.path
[path: <string> | default = "/metrics"]
ring
Конфигурация хэш-кольца для распределения данных между ingesters.
# Ключ для идентификации инстанса в кольце.
# CLI flag: -ring.instance-id
[instance_id: <string> | default = ""]
# Адрес инстанса в кольце.
# CLI flag: -ring.instance-addr
[instance_addr: <string> | default = "127.0.0.1"]
# Порт инстанса.
# CLI flag: -ring.instance-port
[instance_port: <int> | default = 0]
# Интервал отправки heartbeat’ов.
# CLI flag: -ring.heartbeat-period
[heartbeat_period: <duration> | default = "5s"]
# Таймаут неактивности узла перед его исключением из кольца.
# CLI flag: -ring.heartbeat-timeout
[heartbeat_timeout: <duration> | default = "1m"]
frontend_worker
Настройки связи query-frontend с querier’ами.
# Максимальное количество одновременных запросов на один querier.
# CLI flag: -frontend-worker.max-retries
[max_retries: <int> | default = 5]
# Таймаут одного запроса.
# CLI flag: -frontend-worker.grpc-client-config.timeout
[grpc_client_timeout: <duration> | default = "5s"]
blocks_storage.tsdb
Параметры TSDB для долгосрочного хранилища.
# Минимальный интервал между блоками для загрузки.
# CLI flag: -blocks-storage.tsdb.min-block-duration
[min_block_duration: <duration> | default = "2h"]
# Максимальный интервал между блоками.
# CLI flag: -blocks-storage.tsdb.max-block-duration
[max_block_duration: <duration> | default = "2h"]
# Включает вертикальную компактизацию.
# CLI flag: -blocks-storage.tsdb.enable-vertical-compaction
[enable_vertical_compaction: <boolean> | default = true]
exemplars_storage
(Экспериментально) Настройки хранения exemplars — связей между метриками и трассировками.
# Включает хранение exemplars.
# CLI flag: -exemplars-storage.enabled
[enabled: <boolean> | default = false]
# Максимальное количество exemplars на временной ряд.
# CLI flag: -exemplars-storage.max-exemplars-per-series
[max_exemplars_per_series: <int> | default = 10]
native_histograms
(Экспериментально) Поддержка нативных гистограмм Prometheus 2.40+.
# Включает обработку нативных гистограмм.
# CLI flag: -native-histograms.enabled
[enabled: <boolean> | default = false]
# Минимальная разрешающая способность бакетов.
# CLI flag: -native-histograms.min-bucket-factor
[min_bucket_factor: <float> | default = 1.05]
validation
Блок валидации входящих данных.
# Максимальная длина имени метрики (в байтах).
# CLI flag: -validation.max-metric-name-length
[max_metric_name_length: <int> | default = 256]
# Максимальное количество выборок в одном запросе.
# CLI flag: -validation.max-samples-per-query
[max_samples_per_query: <int> | default = 50000000]
# Максимальная продолжительность диапазона в запросе.
# CLI flag: -validation.max-query-length
[max_query_length: <duration> | default = "0s"] # 0 — без ограничения
runtime_config
Позволяет динамически обновлять лимиты и настройки без перезапуска Mimir.
# Путь к файлу с пер-тенантными переопределениями.
# CLI flag: -runtime-config.file
[file: <string> | default = ""]
# Интервал перезагрузки файла.
# CLI flag: -runtime-config.reload-period
[reload_period: <duration> | default = "10s"]
Формат файла runtime_config:
overrides:
tenant-a:
ingestion_rate: 50000
max_series_per_user: 5000000
max_global_streams_per_user: 1000
tenant-b:
ingestion_rate: 100000
max_series_per_user: 10000000
replication
Настройки репликации данных между ingesters.
# Количество реплик данных.
# CLI flag: -distributor.replication-factor
[replication_factor: <int> | default = 3]
# Включает строгую проверку кворума при записи.
# CLI flag: -distributor.consistency-level
[consistency_level: <string> | default = "one"] # one, quorum
shuffle_sharding
Механизм изоляции tenant’ов через шардирование ingesters.
# Максимальное количество ingesters на tenant.
# CLI flag: -distributor.ingestion-tenant-shard-size
[ingestion_tenant_shard_size: <int> | default = 32]
query_scheduler
Опциональный компонент для очередей запросов между query-frontend и querier’ами.
# Максимальное количество запросов в очереди на tenant.
# CLI flag: -query-scheduler.max-outstanding-requests-per-tenant
[max_outstanding_requests_per_tenant: <int> | default = 100]
# Включает использование gRPC вместо HTTP для внутренних вызовов.
# CLI flag: -query-scheduler.use-grpc
[use_grpc: <boolean> | default = true]
metadata
Эндпоинты для получения метаданных временных рядов.
# Включает эндпоинт /api/v1/metadata.
# CLI flag: -querier.metadata-enabled
[metadata_enabled: <boolean> | default = true]
series
Настройки для эндпоинта /api/v1/series.
# Максимальное количество временных рядов в ответе.
# CLI flag: -querier.max-series-per-query
[max_series_per_query: <int> | default = 10000]
# Максимальная продолжительность диапазона времени.
# CLI flag: -querier.max-query-length
[max_query_length: <duration> | default = "0s"]
labels
Настройки для эндпоинта /api/v1/labels.
# Максимальное количество значений метки в ответе.
# CLI flag: -querier.max-label-values-per-query
[max_label_values_per_query: <int> | default = 100000]
readiness
Проверка готовности компонента принимать трафик.
# Минимальное количество ingesters в кольце для readiness.
# CLI flag: -ingester.min-ready-ingesters
[min_ready_ingesters: <int> | default = 1]
lifecycler
Управление жизненным циклом инстанса в ring’е.
# Начальное состояние инстанса: PENDING, JOINING, ACTIVE, LEAVING.
# CLI flag: -lifecycler.initial-state
[initial_state: <string> | default = "PENDING"]
# Автоматическое завершение работы при потере кворума.
# CLI flag: -lifecycler.final-sleep
[final_sleep: <duration> | default = "30s"]
compactor_ring
Отдельное кольцо для распределения задач компактизации.
# Количество шардов компактора.
# CLI flag: -compactor.ring.instance-id
[instance_id: <string> | default = ""]
# Адрес инстанса компактора.
# CLI flag: -compactor.ring.instance-addr
[instance_addr: <string> | default = "127.0.0.1"]
bucket_stores
(Для Ingest Storage) Настройки загрузки блоков из хранилища.
# Максимальное количество одновременно загружаемых блоков.
# CLI flag: -bucket-stores.max-concurrent
[max_concurrent: <int> | default = 100]
# TTL кэша метаданных блоков.
# CLI flag: -bucket-stores.metadata-cache-ttl
[metadata_cache_ttl: <duration> | default = "15m"]
usage_report
Анонимная статистика использования.
# Отправлять данные о количестве tenant’ов и объеме данных.
# CLI flag: -usage-report.enabled
[enabled: <boolean> | default = true]
Эндпоинты API
Mimir предоставляет следующие HTTP-эндпоинты:
/api/v1/push— прием метрик (Remote Write)./api/v1/query— мгновенный PromQL-запрос./api/v1/query_range— диапазонный PromQL-запрос./api/v1/series— поиск временных рядов по меткам./api/v1/labels— получение списка меток./api/v1/label/<name>/values— получение значений конкретной метки./api/v1/rules— управление правилами (если включен ruler)./api/v1/alerts— просмотр активных алертов./metrics— внутренние метрики Prometheus./config— текущая конфигурация (без секретов)./ready— проверка готовности./ring— состояние хэш-кольца (в single-binary режиме).
Все эндпоинты требуют заголовок X-Scope-OrgId, если включена мультиарендность.